package com.qqq.commoncore.utils;


import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;

import static org.springframework.beans.BeanUtils.copyProperties;

public class BeanCopyUtil extends BeanUtils {

    /**
     * 集合数据的拷⻉
     * @param sources 数据源类
     * @param target ⽬标类::new(eg: UserVO::new)
     * @return 拷⻉结果
     * @param <s> 源⽬标类型
     * @param <T> ⽬标对象类型
     */
    public static <s,T> List<T> copyListProperties(List<s> sources, Supplier<T> target){
        List<T> list = new ArrayList<>(sources.size());
        for (s source : sources) {
            //目标对象 t = new 目标对象（）
            T t = target.get();
            copyProperties(source, t);//单个对象拷贝
            list.add(t);
        }
        return list;

        //测试
        /*List<User> sourceList = new ArrayList<>();
        sourceList.add(user1);
        sourceList.add(user2);
        List<UserVO> UserVOList = BeanCopyUtil.copyListProperties(sourceList, UserVO::new)*/
    }
}
